package com.duobaoyu.dby.supply.db.entity.message;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

import java.time.LocalDateTime;

/**
 * @author liyang
 * @version 1.0.0
 * @ClassName DelayMessage
 * @Description 延时消息记录表
 * @createTime 09:02:00 2023/09/27
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Document("sc_delay_message")
@ApiModel(value = "延时消息记录表")
//@EqualsAndHashCode(callSuper = true)
@TableName(value = "sc_delay_message", autoResultMap = true)
public class DelayMessage /*extends BaseEntity*/ {
	private static final long serialVersionUID = 7423806372535205078L;

	/**
	 * 主键消息ID
	 */
	@Id
	@ApiModelProperty(value = "主键消息ID")
	@TableId(type = IdType.INPUT)
	private String id;

	/**
	 * 唯一key（业务单号等）
	 */
	@Field("unique_key")
	@ApiModelProperty(value = "唯一key（业务单号等）")
	private String uniqueKey;

	/**
	 * 消息类型
	 */
	@Field("message_type")
	@ApiModelProperty(value = "消息类型")
	private Integer messageType;

	/**
	 * 业务消息体-JSON压缩
	 */
	@Field("message")
	@ApiModelProperty(value = "业务消息体-JSON压缩")
	private String message;

	/**
	 * 延时处理的时间（处理的时间戳（毫秒））
	 */
	@Field("delay_time")
	@ApiModelProperty(value = "延时处理的时间（处理的时间戳（毫秒））")
	private Long delayTime;

	/**
	 * 消息重试次数
	 */
	@Field("retry_count")
	@ApiModelProperty(value = "消息重试次数")
	private Integer retryCount;

	/**
	 * 状态 1->待处理；2->处理成功；3->处理失败
	 */
	@Field("status")
	@ApiModelProperty(value = "状态 1->待处理；2->处理成功；3->处理失败")
	private Integer status;

	/**
	 * 操作编号，订单编号、商品编号、售后编号
	 */
	@Field("operational_code")
	@ApiModelProperty(value = "操作编号，订单编号、商品编号、售后编号")
	private String operationalCode;

	/**
	 * 备注
	 */
	@Field("remark")
	@ApiModelProperty(value = "备注")
	private String remark;

	/**
	 * 版本号-用作乐观锁
	 */
	@Version
	@Field("version")
	@ApiModelProperty(value = "版本号-用作乐观锁")
	private Integer version;

	/**
	 * 是否删除 0-否 1-是
	 */
	@Field("del_flag")
	@TableLogic(value = "0", delval = "1")
	@ApiModelProperty(value = "是否删除 0-否 1-是")
	private Integer delFlag;

	@Field("create_by")
	@TableField(fill = FieldFill.INSERT)
	private String createBy;

	@Field("create_time")
	@TableField(fill = FieldFill.INSERT)
	private LocalDateTime createTime;

	@Field("update_by")
	@TableField(fill = FieldFill.INSERT_UPDATE)
	private String updateBy;

	@Field("update_time")
	@TableField(fill = FieldFill.INSERT_UPDATE)
	private LocalDateTime updateTime;
}
